/*
 * Copyright (c) 2023 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Description: supply stream player implement stub class.
 * Author: huangchanggui
 * Create: 2023-01-13
 */

#ifndef STREAM_PLAYER_IMPL_STUB_H
#define STREAM_PLAYER_IMPL_STUB_H

#include "cast_stub_helper.h"
#include "i_stream_player_impl.h"

namespace OHOS {
namespace CastEngine {
namespace CastEngineService {
class StreamPlayerImplStub : public IRemoteStub<IStreamPlayerImpl> {
public:
    StreamPlayerImplStub();

    int OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) override;

private:
    DECLARE_STUB_TASK_MAP(StreamPlayerImplStub);

    int32_t DoRegisterListenerTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoUnregisterListenerTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoSetSurface(MessageParcel &data, MessageParcel &reply);
    int32_t DoLoadTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoStartTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoLocalPlayTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoPlayTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoPauseTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoStopTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoNextTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoPreviousTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoSeekTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoSetVolumeTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoSetLoopModeTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoSetSpeedTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoGetPlayerStatusTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoGetPositionTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoGetDurationTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoGetVolumeTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoGetPlaySpeedTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoGetLoopModeTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoGetMediaInfoHolderTask(MessageParcel &data, MessageParcel &reply);
    int32_t DoReleaseTask(MessageParcel &data, MessageParcel &reply);
};
} // namespace CastEngineService
} // namespace CastEngine
} // namespace OHOS

#endif
